<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组扩展</title>
</head>

<body>
    <script>
        // 遍历数组的方式
        // for forEach

        // let arr = [1,2,3,4,5,6];
        // arr.forEach(function(item){
        //     console.log(item);
        // })

        // map
        // let newArr = arr.map(function(item){
        //     // console.log(item);
        //     return item * 10;
        // })
        // console.log(newArr);

        // filter:返回符合回调条件的元素，组成新数组

        // let arr1 = arr.filter(function(item){
        //     return item > 3;
        // })
        // console.log(arr1);

        // let users = [
        //     {name:'zhangsan',age:17},
        //     {name:'lisi',age:16},
        //     {name:'wangermazi',age:20}
        // ]

        // // 获取到年龄小于 18的学生，组成一个新数组
        // let u = users.filter(function(user){
        //     // 表达式的值为真，返回当前遍历的元素
        //     return user.age < 18;
        // })
        // console.log(u);


        //some: 返回 boolean，判断是否有元素符合func条件
        //         只要有一个符合就是 true
        //         全不符合 是false
        // let users = [
        //     {name:'zhangsan',age:27},
        //     {name:'lisi',age:26},
        //     {name:'wangermazi',age:25}
        // ]

        // let result = users.some(function(user){
        //     return user.age < 18;
        // })
        // console.log(result);

        // - every: 返回 boolean, 判断每一个元素是否符合 func条件
        // 每一个都符合 true
        // 有一个为假就为false
        // let users = [
        //     {name:'zhangsan',age:16},
        //     {name:'lisi',age:15},
        //     {name:'wangermazi',age:13}
        // ] 
        // let result = users.every(function(user){
        //     return user.age < 18;
        // })
        // console.log(result);

        // reduce : 接收一个函数作为累加器

        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
        // let sum = 0;
        // for(let i = 0; i < arr.length;i++){
        //     sum += arr[i];
        // }
        // console.log(sum);
        // prev 上一次循环的回调函数返回值，第一次就是第二参数指定的初始值
        // cur: 当前循环的元素
        // index: 索引
        // arr: 原始数组
        let result = arr.reduce(function(prev,cur,index,arr){
            // console.log('prev',prev);
            // console.log('cur',cur);
            // console.log('index',index);
            // console.log('arr',arr);
            // return 99;
            return prev + cur;
            // 1 :     0      1
            // 2 :     1      2
            // 3 :     1+2    3
            // 4 :     1+2+3  4
        },0);

        console.log(result);


    </script>
</body>

</html>